/*
 * @Description: 
 * @Author: changqing
 * @Date: 2021-08-29 21:50:49
 * @LastEditTime: 2021-08-29 21:51:56
 * @LastEditors: changqing
 * @Usage: 
 */


//会把所有被转换过的Observable合并到同一个数据流内，因此会有平行处理的概念，也就说每次转换的Observable都会直接订阅，不会退订上一次的Observable，也不会等待上一次Observable结束，因此在任何目前存在中的Observable数据流中有新事件，都会被转换成整体数据流的事件

var { timer, interval } = require('rxjs'); 
var { concatMap ,take} = require('rxjs/operators');

const source1 = timer(0, 3000);
const source2 = (input) => timer(0, 1500)
  .pipe(map(data => `数据流 ${input}: ${data}`));

source1.pipe(
  mergeMap(data => source2(data))
).subscribe(result => {
  console.log(result);
});
 // 数据流 0: 0
 // 数据流 0: 1
 // 数据流 1: 0 新事件，新数据流
 // 数据流 0: 2
 // 数据流 1: 1
 // 数据流 0: 3
 // 数据流 1: 2
 // 数据流 2: 0 新事件，新数据流
 // 数据流 0: 4
 // 数据流 1: 3
 // 数据流 2: 1
 // 数据流 0: 5
 // 数据流 1: 4
 // 数据流 2: 2
 // 数据流 3: 0 新事件，新数据流
 // 数据流 0: 6
 // 数据流 1: 5
 // 数据流 2: 3
 // 数据流 3: 1
 // 数据流 0: 7
 // 数据流 1: 6
 // 数据流 2: 4